package com.rytong.tools.ui;
//
//import java.util.ArrayList;
//
//import org.keplerproject.luajava.LuaException;
//import org.keplerproject.luajava.LuaObject;
//import org.keplerproject.luajava.LuaState;
//
//import android.app.Activity;
//import android.content.Context;
//import android.graphics.drawable.Drawable;
//import android.location.Criteria;
//import android.location.Location;
//import android.location.LocationListener;
//import android.location.LocationManager;
//import android.os.Bundle;
//import android.view.View;
//
//import com.amap.mapapi.core.GeoPoint;
//import com.amap.mapapi.core.PoiItem;
//import com.amap.mapapi.location.LocationManagerProxy;
//import com.amap.mapapi.map.MapController;
//import com.amap.mapapi.map.MapView;
//import com.amap.mapapi.map.PoiOverlay;
//import com.rytong.tools.utils.Utils;
//
//public class LPAmap extends Component {
//
//    /**
//     * 高德地图mapview
//     */
//    private MapView mapview_;
//    private MapController mController_;
//    private ArrayList<PoiItem> list_;
//    private ArrayList<PoiItem> centerList_;
//    
//    private Location mLocation = null;
//
//    public class MyLPAmap extends MapView implements CompositedComponent {
//        
//        private LocationManagerProxy alm = null;
//        private LocationListener listener = new LocationListener() {
//            
//            public void onStatusChanged(String provider, int status, Bundle extras) {
//                
//            }
//            
//            public void onProviderEnabled(String provider) {
//                
//            }
//            
//            public void onProviderDisabled(String provider) {
//                
//            }
//            
//            public void onLocationChanged(Location location) {
//                
//                mLocation = location;
//                System.out.println(mLocation);
//                if(mLocation.getLatitude() > 0){
//                    
//                    MyLPAmap.this.post(new Runnable() {
//                        
//                        public void run() {
//
//                            Double lat = mLocation.getLatitude() * 1E6;
//                            Double lon = mLocation.getLongitude() * 1E6;
//                            GeoPoint geoPoint = new GeoPoint(lat.intValue(), lon.intValue());
//                            
//                            MapController mapController = MyLPAmap.this.getController();
//                            mapController.setCenter(geoPoint);
//                            mapController.setZoom(17);
//                            mapController.animateTo(geoPoint);
//                            postInvalidate(); 
//                        }
//                    });
//                }
//            }
//        };
//
//        public MyLPAmap(Context context) {
//            super(context);
//            
//            alm = LocationManagerProxy.getInstance(context);
//            Criteria cri = new Criteria(); 
//            cri.setAccuracy(Criteria.ACCURACY_COARSE);
//            cri.setAltitudeRequired(false);
//            cri.setBearingRequired(false);
//            cri.setCostAllowed(false);
//
//            String bestProvider = alm.getBestProvider(cri, true);
//
//            alm.requestLocationUpdates(bestProvider, 2000, 10, listener);
//        }
//        
//        protected void onWindowVisibilityChanged(int arg0) {
//            super.onWindowVisibilityChanged(arg0);
//            
//            if(arg0 == View.GONE){
//                
//                alm.removeUpdates(listener);
//                alm = null;
//            }
//        }
//
//        public Component composited() {
//            return LPAmap.this;
//        }
//    }
//    
//    public void initRealView(Activity activity, String nodeValue) {
//        super.initRealView(activity, nodeValue);
//        mapview_ = new MyLPAmap(activity);
//        mController_ = mapview_.getController();
//        realView_ = mapview_;
//    }
//
//    /**
//     * 设置地图类型
//     * 
//     * @param mapType
//     *            road(街道平面图)/satellite(卫星鸟瞰图)/other(Traffic带路况 平面图)
//     */
//    public void setMapType(String mapType) {
//        if (mapType == null)
//            return;
//        if (mapType.equals("road")) {
//            mapview_.setStreetView(true);
//        } else if (mapType.equals("satellite")) {
//            mapview_.setSatellite(true);
//        } else if (mapType.equals("other")) {
//            mapview_.setTraffic(true);
//        }
//    }
//
//    /**
//     * 设置地图显示的中心点。（仅地图控件可调用）
//     * 
//     * @param latitude
//     *            纬度
//     * @param longitude
//     *            经度
//     */
//    public void setCenter(double latitude, double longitude) {
//        // 用给定的经纬度构造一个GeoPoint，单位是微度(度*1E6)
//        GeoPoint point = new GeoPoint((int) (latitude * 1E6), (int) (longitude * 1E6));
//        mController_.setCenter(point); // 设置地图中心点
//        addCenter(latitude, longitude, "当前位置");
//    }
//
//    /**
//     * 设置地图的缩放级别
//     * 
//     * @param level
//     *            缩放级别取值范围[3,20]
//     */
//    public void setZoom(int level) {
//        mController_.setZoom(level);// 设置缩放等级
//    }
//
//    /**
//     * 设置地图是否可以滚动
//     * 
//     * @param enabled
//     */
//    public void setMapScrollEnabled(boolean enabled) {
//        mapview_.setMapMoveEnable(enabled);
//    }
//
//    /**
//     * 设置地图是否可以缩放。（仅地图控件可调用） 支持手势缩放和双击放大
//     * 
//     * @param enabled
//     * @TODO 目前只能设置双击放大 是否可用，通过手势缩放的还控制不了，待修改
//     */
//    public void setMapZoomEnabled(boolean enabled) {
//        mapview_.setBuiltInZoomControls(enabled);
//        mapview_.displayZoomControls(true);
//        if (!enabled) {
//            int level = mapview_.getZoomLevel();
//            mController_.setZoom(level);
//        }
//        mapview_.setDoubleClickZooming(enabled);
//    }
//    
//    public Location getUserLocation(){
//    	
//        return mLocation;  
//    }
//    
//    /**
//     * 在地图控件上添加新的坐标点
//     */
//    public void addAnnotation(String latitude, String longitude, String title, String subtitle) {
//    	System.out.println("addAnnotation 1" + title + "  " + subtitle);
//        double lat = Double.parseDouble(latitude);
//        double lon = Double.parseDouble(longitude);
//        addAnnotation(lat, lon, title, subtitle);
//    }
//
//    /**
//     * 在地图控件上添加新的坐标点
//     */
//    public void addAnnotation(double latitude, double longitude, String title, String subtitle) {
//    	System.out.println("addAnnotation 2");
//        GeoPoint point = new GeoPoint((int) (latitude * 1E6), (int) (longitude * 1E6));
//        PoiItem item = new PoiItem("id", point, title, subtitle);
//        if (list_ == null) {
//            list_ = new ArrayList<PoiItem>();
//        }
//        list_.add(item);
//        addPoiOverlay();
//    }
//    
//    /**
//     * 在地图上设置中心坐标点
//     */
//    private void addCenter(double latitude, double longitude, String title) {
//        GeoPoint point = new GeoPoint((int) (latitude * 1E6), (int) (longitude * 1E6));
//        PoiItem item = new PoiItem("center", point, title, "");
//        if (centerList_ == null) {
//            centerList_ = new ArrayList<PoiItem>();
//        } else {
//            centerList_.clear();//删除原中心点
//        }
//        centerList_.add(item);
//        addPoiOverlay();
//    }
//    
//    private void addPoiOverlay() {
//        mapview_.getOverlays().clear();
//        if (list_ != null && list_.size() > 0) {
//            int id = Utils.getResourcesId(getActivity(), "map_marker_red", "drawable");
//            Drawable drawable = getActivity().getResources().getDrawable(id);
//            PoiOverlay overlay = new PoiOverlay(drawable, list_);
//            overlay.addToMap(mapview_);
//        }
//        if (centerList_ != null && centerList_.size() > 0) {
//            int id = Utils.getResourcesId(getActivity(), "map_marker_center", "drawable");
//            Drawable drawable = getActivity().getResources().getDrawable(id);
//            PoiOverlay overlay = new PoiOverlay(drawable, centerList_);
//            overlay.addToMap(mapview_);
//        }
//    }
//    
//}
